<template>
  <div class="pest-history">
    <h3 class="history-title">环境健康指数</h3>
    <div class="eco-index-container">
      <div class="eco-score-card">
        <div class="score-header">茶园生态综合评分</div>
        <div class="score-value">{{ calculateAverageScore() }}</div>
        <div class="score-label">{{ getScoreLabel(calculateAverageScore()) }}</div>
        <div class="score-trend">较昨日   
          <span :class="scoreDiff > 0 ? 'up' : 'down'">
            {{ scoreDiff > 0 ? '↑' : '↓' }} {{ Math.abs(scoreDiff) }}分
          </span>
        </div>
      </div>
      
      <div class="eco-factors">
        <div v-for="(factor, index) in ecoFactors" :key="index" class="factor-item">
          <div class="factor-name">
            {{ factor.name }}
          </div>
          <div class="factor-bar-wrapper">
            <div class="factor-bar-container" 
                @mouseenter="handleMouseEnter(factor.score)" 
                @mouseleave="handleMouseLeave" 
                @mousemove="handleMouseMove($event)">
              <div class="factor-bar" :style="{ width: factor.score + '%', backgroundColor: getScoreColor(factor.score) }">
                <span class="bar-score" v-show="isHovering && currentScore === factor.score">{{ factor.score }}分</span>
              </div>
            </div>
          </div>
        </div>
      </div>
      
      <div class="eco-recommendations">
        <h4>环境优化建议</h4>
        <ul>
          <li v-for="(recommendation, index) in recommendations" :key="index" :class="getRecommendationClass(recommendation, index)">
            {{ index + 1 }}. {{ recommendation }}
          </li>
        </ul>
      </div>
    </div>
  </div>
</template>

<script setup>
import { ref, defineExpose, onMounted } from 'vue';

// 环境健康因素数据
const ecoFactors = ref([
  { name: '气候适宜性', score: 81 },
  { name: '土壤健康', score: 85 },
  { name: '水质状况', score: 75 },
  { name: '空气质量', score: 65 },
  { name: '微生物活性', score: 80 }
]);

// 环境优化建议
const recommendations = ref([
  '适时喷药防治茶小绿叶蝉，注意用药安全',
  '茶树尺蠖发生高峰，加强监测防控措施',
  '近期防控茶园红蜘蛛，提前预防为主',
  '春茶期间做好茶毛虫综合防治工作',
  '加强茶园白星花金龟监测，减少产卵危害'
]);

// 分数变化值
const scoreDiff = ref(3);

// 悬停状态和当前分数
const isHovering = ref(false);
const currentScore = ref(null);
const popupStyle = ref({
  left: '0px',
  top: '0px'
});

// 前一天分数存储变量
const previousScore = ref(0);

// 鼠标进入进度条
function handleMouseEnter(score) {
  isHovering.value = true;
  currentScore.value = score;
}

// 鼠标离开进度条
function handleMouseLeave() {
  isHovering.value = false;
  currentScore.value = null;
}

// 处理鼠标移动事件 - 更新分数和位置
function handleMouseMove(event) {
  if (!isHovering.value) return;
  
  // 使用中心的位置防止闪烁
  const target = event.currentTarget;
  const rect = target.getBoundingClientRect();
  
  popupStyle.value = {
    left: (event.clientX) + 'px',
    top: (rect.top - 5) + 'px'
  };
}

// 根据分数获取对应的颜色
function getScoreColor(score) {
  if (score >= 90) return '#4CAF50'; // 优秀 - 绿色
  if (score >= 75) return '#8BC34A'; // 良好 - 浅绿
  if (score >= 60) return '#FFC107'; // 中等 - 黄色
  if (score >= 40) return '#FF9800'; // 及格 - 橙色
  return '#F44336';                  // 不及格 - 红色
}

// 计算平均分
function calculateAverageScore() {
  const sum = ecoFactors.value.reduce((total, factor) => total + factor.score, 0);
  const average = Math.round(sum / ecoFactors.value.length);
  return average;
}

// 计算柱子宽度
function calculateBarWidth(score) {
  // 返回原始分数百分比
  return score;
}

// 获取分数对应的评级标签
function getScoreLabel(score) {
  if (score >= 90) return '优秀';
  if (score >= 80) return '良好';
  if (score >= 70) return '中等';
  if (score >= 60) return '及格';
  return '不及格';
}

// 根据日期更新数据
function updateData(date) {
  if (!date) return;
  
  // 记录当前的平均分（更新前的）
  const currentAvgScore = calculateAverageScore();
  
  // 使用日期的各个部分生成伪随机数据
  const day = date.getDate();
  const month = date.getMonth() + 1;
  
  // 以下是3月不同日期的固定分数设置
  const marchScores = {
    1: { // 3月1日
      climate: 84,
      soil: 82,
      water: 79,
      air: 68,
      microbial: 83,
      previous: 77 // 2月29日的平均分
    },
    2: { // 3月2日
      climate: 82,
      soil: 83,
      water: 77,
      air: 70,
      microbial: 81,
      previous: 79 // 3月1日的平均分
    },
    3: { // 3月3日
      climate: 80,
      soil: 84,
      water: 76,
      air: 73,
      microbial: 79,
      previous: 79 // 3月2日的平均分
    },
    4: { // 3月4日
      climate: 83,
      soil: 85,
      water: 78,
      air: 76,
      microbial: 82,
      previous: 78 // 3月3日的平均分
    },
    5: { // 3月5日
      climate: 85,
      soil: 87,
      water: 80,
      air: 78,
      microbial: 84,
      previous: 81 // 3月4日的平均分
    },
    6: { // 3月6日
      climate: 87,
      soil: 85,
      water: 83,
      air: 75,
      microbial: 86,
      previous: 83 // 3月5日的平均分
    },
    7: { // 3月7日
      climate: 86,
      soil: 84,
      water: 81,
      air: 73,
      microbial: 85,
      previous: 83 // 3月6日的平均分
    },
    8: { // 3月8日
      climate: 84,
      soil: 83,
      water: 79,
      air: 71,
      microbial: 83,
      previous: 82 // 3月7日的平均分
    },
    9: { // 3月9日
      climate: 83,
      soil: 81,
      water: 77,
      air: 69,
      microbial: 81,
      previous: 80 // 3月8日的平均分
    },
    10: { // 3月10日
      climate: 85,
      soil: 83,
      water: 80,
      air: 72,
      microbial: 83,
      previous: 78 // 3月9日的平均分
    },
    11: { // 3月11日
      climate: 88,
      soil: 85,
      water: 82,
      air: 75,
      microbial: 85,
      previous: 81 // 3月10日的平均分
    },
    12: { // 3月12日
      climate: 86,
      soil: 87,
      water: 83,
      air: 78,
      microbial: 86,
      previous: 83 // 3月11日的平均分
    },
    13: { // 3月13日
      climate: 83,
      soil: 85,
      water: 81,
      air: 76,
      microbial: 84,
      previous: 84 // 3月12日的平均分
    },
    14: { // 3月14日
      climate: 80,
      soil: 83,
      water: 79,
      air: 73,
      microbial: 82,
      previous: 82 // 3月13日的平均分
    },
    15: { // 3月15日
      climate: 78,
      soil: 80,
      water: 76,
      air: 70,
      microbial: 79,
      previous: 79 // 3月14日的平均分
    },
    16: { // 3月16日
      climate: 81,
      soil: 85,
      water: 75,
      air: 65,
      microbial: 80,
      previous: 77 // 3月15日的平均分
    },
    17: { // 3月17日
      climate: 83,
      soil: 86,
      water: 77,
      air: 68,
      microbial: 82,
      previous: 77 // 3月16日的平均分
    },
    18: { // 3月18日
      climate: 85,
      soil: 88,
      water: 79,
      air: 72,
      microbial: 85,
      previous: 79 // 3月17日的平均分
    },
    19: { // 3月19日
      climate: 87,
      soil: 87,
      water: 81,
      air: 74,
      microbial: 86,
      previous: 82 // 3月18日的平均分
    },
    20: { // 3月20日
      climate: 88,
      soil: 85,
      water: 83,
      air: 76,
      microbial: 87,
      previous: 83 // 3月19日的平均分
    },
    21: { // 3月21日
      climate: 85,
      soil: 83,
      water: 80,
      air: 73,
      microbial: 84,
      previous: 84 // 3月20日的平均分
    },
    22: { // 3月22日
      climate: 83,
      soil: 81,
      water: 78,
      air: 70,
      microbial: 81,
      previous: 81 // 3月21日的平均分
    },
    23: { // 3月23日
      climate: 80,
      soil: 79,
      water: 76,
      air: 68,
      microbial: 79,
      previous: 79 // 3月22日的平均分
    },
    24: { // 3月24日
      climate: 82,
      soil: 81,
      water: 78,
      air: 71,
      microbial: 81,
      previous: 76 // 3月23日的平均分
    },
    25: { // 3月25日
      climate: 85,
      soil: 83,
      water: 80,
      air: 74,
      microbial: 84,
      previous: 79 // 3月24日的平均分
    },
    26: { // 3月26日
      climate: 87,
      soil: 86,
      water: 82,
      air: 77,
      microbial: 86,
      previous: 81 // 3月25日的平均分
    },
    27: { // 3月27日
      climate: 89,
      soil: 88,
      water: 85,
      air: 79,
      microbial: 88,
      previous: 84 // 3月26日的平均分
    },
    28: { // 3月28日
      climate: 91,
      soil: 89,
      water: 87,
      air: 82,
      microbial: 90,
      previous: 86 // 3月27日的平均分
    },
    29: { // 3月29日
      climate: 89,
      soil: 87,
      water: 85,
      air: 66,
      microbial: 88,
      previous: 88 // 3月28日的平均分
    },
    30: { // 3月30日
      climate: 87,
      soil: 85,
      water: 83,
      air: 70,
      microbial: 86,
      previous: 83 // 3月29日的平均分
    },
    31: { // 3月31日
      climate: 85,
      soil: 83,
      water: 81,
      air: 74,
      microbial: 84,
      previous: 82 // 3月30日的平均分
    }
  };
  
  // 以下是2月不同日期的固定分数设置
  const februaryScores = {
    1: { // 2月1日
      climate: 75,
      soil: 73,
      water: 70,
      air: 65,
      microbial: 76,
      previous: 72 // 1月31日的平均分
    },
    2: { // 2月2日
      climate: 76,
      soil: 74,
      water: 71,
      air: 67,
      microbial: 77,
      previous: 72 // 2月1日的平均分
    },
    3: { // 2月3日
      climate: 74,
      soil: 75,
      water: 72,
      air: 66,
      microbial: 75,
      previous: 73 // 2月2日的平均分
    },
    4: { // 2月4日
      climate: 73,
      soil: 76,
      water: 73,
      air: 65,
      microbial: 74,
      previous: 72 // 2月3日的平均分
    },
    5: { // 2月5日
      climate: 75,
      soil: 77,
      water: 74,
      air: 66,
      microbial: 76,
      previous: 72 // 2月4日的平均分
    },
    6: { // 2月6日
      climate: 76,
      soil: 78,
      water: 75,
      air: 67,
      microbial: 77,
      previous: 74 // 2月5日的平均分
    },
    7: { // 2月7日
      climate: 77,
      soil: 76,
      water: 74,
      air: 68,
      microbial: 78,
      previous: 75 // 2月6日的平均分
    },
    8: { // 2月8日
      climate: 78,
      soil: 75,
      water: 73,
      air: 69,
      microbial: 79,
      previous: 75 // 2月7日的平均分
    },
    9: { // 2月9日
      climate: 76,
      soil: 74,
      water: 72,
      air: 70,
      microbial: 77,
      previous: 75 // 2月8日的平均分
    },
    10: { // 2月10日
      climate: 75,
      soil: 73,
      water: 71,
      air: 71,
      microbial: 76,
      previous: 74 // 2月9日的平均分
    },
    11: { // 2月11日
      climate: 77,
      soil: 75,
      water: 73,
      air: 72,
      microbial: 78,
      previous: 73 // 2月10日的平均分
    },
    12: { // 2月12日
      climate: 78,
      soil: 77,
      water: 74,
      air: 71,
      microbial: 79,
      previous: 75 // 2月11日的平均分
    },
    13: { // 2月13日
      climate: 79,
      soil: 76,
      water: 75,
      air: 70,
      microbial: 80,
      previous: 76 // 2月12日的平均分
    },
    14: { // 2月14日
      climate: 78,
      soil: 75,
      water: 76,
      air: 69,
      microbial: 79,
      previous: 76 // 2月13日的平均分
    },
    15: { // 2月15日
      climate: 77,
      soil: 74,
      water: 75,
      air: 68,
      microbial: 78,
      previous: 75 // 2月14日的平均分
    },
    16: { // 2月16日
      climate: 76,
      soil: 75,
      water: 74,
      air: 67,
      microbial: 77,
      previous: 74 // 2月15日的平均分
    },
    17: { // 2月17日
      climate: 77,
      soil: 76,
      water: 73,
      air: 68,
      microbial: 78,
      previous: 74 // 2月16日的平均分
    },
    18: { // 2月18日
      climate: 78,
      soil: 77,
      water: 74,
      air: 69,
      microbial: 79,
      previous: 74 // 2月17日的平均分
    },
    19: { // 2月19日
      climate: 79,
      soil: 78,
      water: 75,
      air: 70,
      microbial: 80,
      previous: 75 // 2月18日的平均分
    },
    20: { // 2月20日
      climate: 80,
      soil: 79,
      water: 76,
      air: 71,
      microbial: 81,
      previous: 76 // 2月19日的平均分
    },
    21: { // 2月21日
      climate: 79,
      soil: 78,
      water: 75,
      air: 70,
      microbial: 80,
      previous: 77 // 2月20日的平均分
    },
    22: { // 2月22日
      climate: 78,
      soil: 77,
      water: 74,
      air: 69,
      microbial: 79,
      previous: 76 // 2月21日的平均分
    },
    23: { // 2月23日
      climate: 77,
      soil: 76,
      water: 73,
      air: 68,
      microbial: 78,
      previous: 75 // 2月22日的平均分
    },
    24: { // 2月24日
      climate: 76,
      soil: 75,
      water: 72,
      air: 67,
      microbial: 77,
      previous: 74 // 2月23日的平均分
    },
    25: { // 2月25日
      climate: 77,
      soil: 76,
      water: 73,
      air: 68,
      microbial: 78,
      previous: 73 // 2月24日的平均分
    },
    26: { // 2月26日
      climate: 78,
      soil: 77,
      water: 74,
      air: 69,
      microbial: 79,
      previous: 74 // 2月25日的平均分
    },
    27: { // 2月27日
      climate: 79,
      soil: 78,
      water: 75,
      air: 70,
      microbial: 80,
      previous: 75 // 2月26日的平均分
    },
    28: { // 2月28日
      climate: 80,
      soil: 79,
      water: 76,
      air: 71,
      microbial: 81,
      previous: 76 // 2月27日的平均分
    },
    29: { // 2月29日
      climate: 81,
      soil: 80,
      water: 77,
      air: 72,
      microbial: 82,
      previous: 77 // 2月28日的平均分
    }
  };

  // 以下是4月不同日期的固定分数设置
  const aprilScores = {
    1: { // 4月1日
      climate: 86,
      soil: 82,
      water: 82,
      air: 75,
      microbial: 85,
      previous: 82 // 3月31日的平均分
    },
    2: { // 4月2日
      climate: 87,
      soil: 83,
      water: 83,
      air: 76,
      microbial: 86,
      previous: 82 // 4月1日的平均分
    },
    3: { // 4月3日
      climate: 88,
      soil: 84,
      water: 84,
      air: 77,
      microbial: 87,
      previous: 83 // 4月2日的平均分
    },
    4: { // 4月4日
      climate: 89,
      soil: 85,
      water: 85,
      air: 78,
      microbial: 88,
      previous: 84 // 4月3日的平均分
    },
    5: { // 4月5日
      climate: 90,
      soil: 86,
      water: 86,
      air: 79,
      microbial: 89,
      previous: 85 // 4月4日的平均分
    },
    6: { // 4月6日
      climate: 91,
      soil: 87,
      water: 87,
      air: 80,
      microbial: 90,
      previous: 86 // 4月5日的平均分
    },
    7: { // 4月7日
      climate: 92,
      soil: 88,
      water: 88,
      air: 81,
      microbial: 91,
      previous: 87 // 4月6日的平均分
    },
    8: { // 4月8日
      climate: 91,
      soil: 87,
      water: 87,
      air: 80,
      microbial: 90,
      previous: 88 // 4月7日的平均分
    },
    9: { // 4月9日
      climate: 90,
      soil: 86,
      water: 86,
      air: 79,
      microbial: 89,
      previous: 87 // 4月8日的平均分
    },
    10: { // 4月10日
      climate: 89,
      soil: 85,
      water: 85,
      air: 78,
      microbial: 88,
      previous: 86 // 4月9日的平均分
    },
    11: { // 4月11日
      climate: 88,
      soil: 84,
      water: 84,
      air: 77,
      microbial: 87,
      previous: 85 // 4月10日的平均分
    },
    12: { // 4月12日
      climate: 87,
      soil: 83,
      water: 83,
      air: 76,
      microbial: 86,
      previous: 84 // 4月11日的平均分
    },
    13: { // 4月13日
      climate: 86,
      soil: 82,
      water: 82,
      air: 75,
      microbial: 85,
      previous: 83 // 4月12日的平均分
    },
    14: { // 4月14日
      climate: 87,
      soil: 83,
      water: 83,
      air: 76,
      microbial: 86,
      previous: 82 // 4月13日的平均分
    },
    15: { // 4月15日
      climate: 88,
      soil: 84,
      water: 84,
      air: 77,
      microbial: 87,
      previous: 83 // 4月14日的平均分
    },
    16: { // 4月16日
      climate: 89,
      soil: 85,
      water: 85,
      air: 78,
      microbial: 88,
      previous: 84 // 4月15日的平均分
    },
    17: { // 4月17日
      climate: 90,
      soil: 86,
      water: 86,
      air: 79,
      microbial: 89,
      previous: 85 // 4月16日的平均分
    },
    18: { // 4月18日
      climate: 91,
      soil: 87,
      water: 87,
      air: 80,
      microbial: 90,
      previous: 86 // 4月17日的平均分
    },
    19: { // 4月19日
      climate: 92,
      soil: 88,
      water: 88,
      air: 81,
      microbial: 91,
      previous: 87 // 4月18日的平均分
    },
    20: { // 4月20日
      climate: 91,
      soil: 87,
      water: 87,
      air: 80,
      microbial: 90,
      previous: 88 // 4月19日的平均分
    },
    21: { // 4月21日
      climate: 90,
      soil: 86,
      water: 86,
      air: 79,
      microbial: 89,
      previous: 87 // 4月20日的平均分
    },
    22: { // 4月22日
      climate: 89,
      soil: 85,
      water: 85,
      air: 78,
      microbial: 88,
      previous: 86 // 4月21日的平均分
    },
    23: { // 4月23日
      climate: 88,
      soil: 84,
      water: 84,
      air: 77,
      microbial: 87,
      previous: 85 // 4月22日的平均分
    },
    24: { // 4月24日
      climate: 87,
      soil: 83,
      water: 83,
      air: 76,
      microbial: 86,
      previous: 84 // 4月23日的平均分
    },
    25: { // 4月25日
      climate: 86,
      soil: 82,
      water: 82,
      air: 75,
      microbial: 85,
      previous: 83 // 4月24日的平均分
    },
    26: { // 4月26日
      climate: 87,
      soil: 83,
      water: 83,
      air: 76,
      microbial: 86,
      previous: 82 // 4月25日的平均分
    },
    27: { // 4月27日
      climate: 88,
      soil: 84,
      water: 84,
      air: 77,
      microbial: 87,
      previous: 83 // 4月26日的平均分
    },
    28: { // 4月28日
      climate: 89,
      soil: 85,
      water: 85,
      air: 78,
      microbial: 88,
      previous: 84 // 4月27日的平均分
    },
    29: { // 4月29日
      climate: 90,
      soil: 86,
      water: 86,
      air: 79,
      microbial: 89,
      previous: 85 // 4月28日的平均分
    },
    30: { // 4月30日
      climate: 91,
      soil: 87,
      water: 87,
      air: 80,
      microbial: 90,
      previous: 86 // 4月29日的平均分
    }
  };
  
  // 如果是3月预设的日期，使用固定值
  if (month === 3 && marchScores[day]) {
    const dayData = marchScores[day];
    
    ecoFactors.value = [
      { name: '气候适宜性', score: dayData.climate },
      { name: '土壤健康', score: dayData.soil },
      { name: '水质状况', score: dayData.water },
      { name: '空气质量', score: dayData.air },
      { name: '微生物活性', score: dayData.microbial }
    ];
    
    // 根据各项指标生成针对性建议
    const newRecommendations = generateRecommendations(dayData.climate, dayData.soil, dayData.water, dayData.air, dayData.microbial, date);
    
    // 更新建议
    recommendations.value = newRecommendations;
    
    // 设置分数变化值
    previousScore.value = dayData.previous; // 前一天的分数
    scoreDiff.value = calculateAverageScore() - previousScore.value;
    
    return;
  }

  // 如果是2月预设的日期，使用固定值
  if (month === 2 && februaryScores[day]) {
    const dayData = februaryScores[day];
    
    ecoFactors.value = [
      { name: '气候适宜性', score: dayData.climate },
      { name: '土壤健康', score: dayData.soil },
      { name: '水质状况', score: dayData.water },
      { name: '空气质量', score: dayData.air },
      { name: '微生物活性', score: dayData.microbial }
    ];
    
    // 根据各项指标生成针对性建议
    const newRecommendations = generateRecommendations(dayData.climate, dayData.soil, dayData.water, dayData.air, dayData.microbial, date);
    
    // 更新建议
    recommendations.value = newRecommendations;
    
    // 设置分数变化值
    previousScore.value = dayData.previous; // 前一天的分数
    scoreDiff.value = calculateAverageScore() - previousScore.value;
    
    return;
  }

  // 如果是4月预设的日期，使用固定值
  if (month === 4 && aprilScores[day]) {
    const dayData = aprilScores[day];
    
    ecoFactors.value = [
      { name: '气候适宜性', score: dayData.climate },
      { name: '土壤健康', score: dayData.soil },
      { name: '水质状况', score: dayData.water },
      { name: '空气质量', score: dayData.air },
      { name: '微生物活性', score: dayData.microbial }
    ];
    
    // 根据各项指标生成针对性建议
    const newRecommendations = generateRecommendations(dayData.climate, dayData.soil, dayData.water, dayData.air, dayData.microbial, date);
    
    // 更新建议
    recommendations.value = newRecommendations;
    
    // 设置分数变化值
    previousScore.value = dayData.previous; // 前一天的分数
    scoreDiff.value = calculateAverageScore() - previousScore.value;
    
    return;
  }

  // 其他日期的处理保持不变
  const dayMonth = day + month;
  
  // 生成基础分数（77-95之间浮动）
  const baseScore = 77 + (dayMonth % 18);
  
  // 使用日期的不同部分为不同指标生成变化值，确保最低分不低于65
  const climate = 77 + (day % 18);  // 77-94
  const soil = 75 + ((day * month) % 20);  // 75-94
  const water = 77 + ((day + month * 2) % 18);  // 77-94
  const air = 65 + ((day * 2 + month) % 30);  // 65-94
  const microbial = 75 + ((day + month * 3) % 20);  // 75-94
  
  // 更新环境健康数据
  ecoFactors.value = [
    { name: '气候适宜性', score: climate },
    { name: '土壤健康', score: soil },
    { name: '水质状况', score: water },
    { name: '空气质量', score: air },
    { name: '微生物活性', score: microbial }
  ];
  
  // 生成建议
  const newRecommendations = generateRecommendations(climate, soil, water, air, microbial, date);
  
  // 更新建议
  recommendations.value = newRecommendations;
  
  // 获取前一天的日期
  const previousDay = new Date(date);
  previousDay.setDate(previousDay.getDate() - 1);
  
  // 如果是第一次加载或没有前一天的数据，设置一个合理的前一天分数
  if (!previousScore.value || previousScore.value === 0) {
    // 设置一个比当前平均分略低的分数作为前一天分数
    const currentAvg = calculateAverageScore();
    previousScore.value = currentAvg - Math.floor(Math.random() * 3) - 1; // 随机减少1-3分
  }
  
  // 更新分数差值：当前平均分与前一天平均分的差值
  scoreDiff.value = calculateAverageScore() - previousScore.value;
  
  // 保存当前平均分为下一天的前一天分数
  // 在组件即将更新前保存这个值
  previousScore.value = calculateAverageScore();
}

// 添加生成建议的辅助函数
function generateRecommendations(climate, soil, water, air, microbial, date) {
  const newRecommendations = [];
  
  // 气候建议组
  const climateAdvices = {
    low: [
      '气温偏低，建议增设保温设施，注意防寒',
      '温度不高，及时采取覆盖措施保护茶树',
      '气温较低，适时调节茶园温度和湿度'
    ],
    medium: [
      '气候温和，建议适时进行茶园通风管理',
      '气温适中，可以开展茶树修剪工作了',
      '气候舒适，适合进行茶园养护作业'
    ],
    high: [
      '气候条件优越，抓紧时机修剪管理',
      '阳光充足，注意遮阴和温度调节',
      '气候特别理想，开展茶园管理工作'
    ]
  };

  // 土壤建议组
  const soilAdvices = {
    low: [
      '土壤养分不足，及时补充有机质改良',
      '土壤状况欠佳，增施有机肥提升活性',
      '土壤肥力偏低，适时补充生物肥料'
    ],
    medium: [
      '土壤状况一般，适量补充肥料和水分',
      '土壤环境尚可，继续改良保持平衡',
      '土壤养分适中，注意保持透气性好'
    ],
    high: [
      '土壤环境良好，维持当前施肥方案',
      '土壤肥力充足，保持现有管理措施',
      '土壤状态优异，适时进行土壤松土'
    ]
  };

  // 水质建议组
  const waterAdvices = {
    low: [
      '水质状况不佳，及时检修灌溉设备',
      '水质偏差，优化灌溉系统和用水',
      '水质指标偏低，检查并改善设施'
    ],
    medium: [
      '水分管理正常，优化灌溉提高效率',
      '灌溉条件适中，调整用水计划',
      '水分利用尚可，注意设备维护'
    ],
    high: [
      '水质条件优良，保持现有灌溉方案',
      '水分管理到位，维持灌溉计划',
      '灌溉效果理想，继续保持现状'
    ]
  };

  // 空气建议组
  const airAdvices = {
    low: [
      '空气质量欠佳，增加通风改善环境',
      '空气流通不足，加强通风调节湿度',
      '空气状况偏差，采取措施增加通风'
    ],
    medium: [
      '空气环境适中，保持适度通风换气',
      '通风条件良好，调节设施和频率',
      '空气质量正常，维持现有通风方案'
    ],
    high: [
      '空气质量优异，保持现有通风状态',
      '空气清新怡人，继续执行管理方案',
      '通风效果理想，维持调节方案'
    ]
  };

  // 微生物建议组
  const microAdvices = {
    low: [
      '微生物活性低，减少农药改善环境',
      '菌群状况欠佳，调整用药促进恢复',
      '微生物指标低，采用生物防治方案'
    ],
    medium: [
      '微生物环境中等，科学用药保护',
      '菌群活性正常，平衡防治与保护',
      '微生物状况良好，注意科学用药'
    ],
    high: [
      '微生物活性好，保持防治方案',
      '菌群环境理想，继续科学用药',
      '生态系统稳定，维持保护措施'
    ]
  };

  // 使用更复杂的随机索引生成逻辑，确保连续日期有更大的差异
  const getRandomIndex = (date, offset = 0) => {
    const day = date.getDate();
    const month = date.getMonth() + 1;
    const seed = (day * 31 + month * 12 + offset * 7) % 17; // 使用质数17增加随机性
    return seed % 3;
  };

  // 根据各项指标选择对应的建议
  if (climate < 70) {
    newRecommendations.push(climateAdvices.low[getRandomIndex(date)]);
  } else if (climate < 80) {
    newRecommendations.push(climateAdvices.medium[getRandomIndex(date)]);
  } else {
    newRecommendations.push(climateAdvices.high[getRandomIndex(date)]);
  }

  if (soil < 70) {
    newRecommendations.push(soilAdvices.low[getRandomIndex(date, 1)]);
  } else if (soil < 80) {
    newRecommendations.push(soilAdvices.medium[getRandomIndex(date, 1)]);
  } else {
    newRecommendations.push(soilAdvices.high[getRandomIndex(date, 1)]);
  }

  if (water < 70) {
    newRecommendations.push(waterAdvices.low[getRandomIndex(date, 2)]);
  } else if (water < 85) {
    newRecommendations.push(waterAdvices.medium[getRandomIndex(date, 2)]);
  } else {
    newRecommendations.push(waterAdvices.high[getRandomIndex(date, 2)]);
  }

  if (air < 70) {
    newRecommendations.push(airAdvices.low[getRandomIndex(date, 3)]);
  } else if (air < 85) {
    newRecommendations.push(airAdvices.medium[getRandomIndex(date, 3)]);
  } else {
    newRecommendations.push(airAdvices.high[getRandomIndex(date, 3)]);
  }

  if (microbial < 70) {
    newRecommendations.push(microAdvices.low[getRandomIndex(date, 4)]);
  } else if (microbial < 85) {
    newRecommendations.push(microAdvices.medium[getRandomIndex(date, 4)]);
  } else {
    newRecommendations.push(microAdvices.high[getRandomIndex(date, 4)]);
  }
  
  return newRecommendations;
}

// 检查建议文本中是否包含空气质量相关内容
function isAirQualityAdvice(recommendation) {
  return recommendation.includes('空气质量') || 
         recommendation.includes('空气流通') || 
         recommendation.includes('通风');
}

// 获取建议文本的CSS类
function getRecommendationClass(recommendation, index) {
  // 确保只对第4条建议(索引3)进行颜色修改，且只对空气质量相关建议处理
  if (index === 3 && isAirQualityAdvice(recommendation)) {
    // 找到空气质量因素的分数
    const airQualityFactor = ecoFactors.value.find(factor => factor.name === '空气质量');
    if (airQualityFactor) {
      const score = airQualityFactor.score;
      if (score < 70) {
        return 'air-quality-low';
      } else if (score < 80) {
        return 'air-quality-medium';
      }
    }
  }
  return '';
}

// 在组件挂载时初始化数据
onMounted(() => {
  // 设置初始数据
  ecoFactors.value = [
    { name: '气候适宜性', score: 81 },
    { name: '土壤健康', score: 85 },
    { name: '水质状况', score: 75 },
    { name: '空气质量', score: 65 },
    { name: '微生物活性', score: 80 }
  ];
  
  recommendations.value = [
    '气候特别理想，开展茶园管理工作',
    '土壤环境良好，维持当前施肥方案',
    '水分利用尚可，注意设备维护',
    '空气质量欠佳，增加通风改善环境',
    '菌群活性正常，平衡防治与保护'
  ];
  
  // 初始化前一天分数（默认比当前低3分）
  previousScore.value = calculateAverageScore() - 3;
  scoreDiff.value = 3; // 初始差值为+3
});

// 对外暴露更新数据方法
defineExpose({
  updateData
});
</script>

<style scoped>
.pest-history {
  background-color: white;
  border-radius: 8px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.08);
  padding: 20px 10px 42px 10px;
  position: relative;
  z-index: 1;
  height: 787px; /* 虫情预警日历高度 */
  display: flex;
  flex-direction: column;
  margin-bottom: 15px;
}

.eco-index-container {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow: hidden;
}

.history-title {
  font-size: 15px;
  font-weight: bold;
  margin: 0 0 15px 0; /* 增加底部边距从8px到28px，使下面的内容向下移动20px */
  padding-bottom: 6px;
  border-bottom: 1px solid #eee;
}

/* 生态评分卡片样式 */
.eco-score-card {
  background: linear-gradient(135deg, #f0fff4 0%, #e8f5e9 100%);
  border-radius: 10px;
  padding: 35px 15px 35px 15px; /* 将上下内边距从45px减少到35px，总共减少20px */
  text-align: center;
  margin-bottom: 10px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.05);
  width: calc(100% - 30px);
  margin-left: auto;
  margin-right: auto;
}

.score-header {
  font-size: 16px; /* 从14px增大到16px */
  color: #333;
  margin-bottom: 9px; /* 从6px增加到9px */
  font-weight: bold; /* 加粗显示 */
}

.score-value {
  font-size: 32px; /* 减小字体大小 */
  font-weight: bold;
  color: #4CAF50;
  margin-bottom: 6px; /* 从3px增加到6px */
  line-height: 1;
}

.score-label {
  display: inline-block;
  background-color: rgba(76, 175, 80, 0.1);
  color: #4CAF50;
  padding: 1px 10px;
  border-radius: 12px;
  font-size: 13px;
  margin-bottom: 9px; /* 从6px增加到9px */
}

.score-trend {
  font-size: 15px; /* 从13px增大到15px */
  color: #666;
  font-weight: 500; /* 稍微加粗 */
  margin-top: 3px; /* 新增上边距 */
}

.up {
  color: #4CAF50;
}

.down {
  color: #F44336;
}

/* 环境因素条形图样式 */
.eco-factors {
  margin-bottom: 10px;
  width: calc(100% - 30px); /* 与蓝色背景框宽度一致 */
  margin-left: auto;
  margin-right: auto;
}

.factor-item {
  margin-bottom: 13px; /* 从15px减少到13px，使每个因素项向上移动2px */
}

/* 第一个因素项保持不变，其余的向上移动 */
.factor-item:not(:first-child) {
  margin-top: -7px; /* 气候适宜性、土壤健康、水质状况、空气质量、微生物活性，向上移动 */
}

.factor-name {
  font-size: 15px;
  margin-bottom: 5px;
  display: flex;
  justify-content: space-between;
  font-weight: 500;
  color: #111;
}

.factor-score {
  display: none; /* 保持隐藏，但我们添加了内部标签 */
}

.factor-bar-wrapper {
  display: flex;
  align-items: center;
}

.factor-bar-container {
  height: 12px;
  background-color: #f0f0f0;
  border-radius: 6px;
  overflow: visible;
  position: relative;
  width: calc(100% - 20px);
  margin-left: 0;
  margin-top: 5px;
  margin-bottom: 5px;
  cursor: pointer;
}

.factor-bar {
  height: 100%;
  border-radius: 6px; /* 与容器相适应 */
  transition: width 0.5s ease;
  position: relative; /* 添加相对定位 */
}

.bar-score {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  color: white;
  font-size: 12px;
  font-weight: bold;
  text-shadow: 0 0 2px rgba(0,0,0,0.5);
  white-space: nowrap;
}

.bar-label {
  display: none;
}

.factor-bar:hover .bar-label {
  opacity: 1;
}

.factor-bar:hover {
  transform: scale(1.02);
  cursor: pointer;
  box-shadow: 0 0 5px rgba(76, 175, 80, 0.5);
}

/* 进度条悬停效果增强 */
.factor-bar-container:hover {
  background-color: #e8e8e8; /* 悬停背景色变化 */
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); /* 添加阴影 */
}

/* 移除固定位置气泡样式，只使用tooltip跟随鼠标 */
.score-bubble {
  display: none;
}

/* 优化tooltip样式使其更好地跟随鼠标 */
.tooltip {
  position: fixed;
  z-index: 99999;
  background-color: rgba(144, 238, 144, 0.85);
  color: #333;
  padding: 5px 12px;
  border-radius: 4px;
  font-size: 14px;
  font-weight: bold;
  pointer-events: none;
  box-shadow: 0 3px 10px rgba(0,0,0,0.2);
  white-space: nowrap;
  border: 1px solid rgba(76, 175, 80, 0.2);
  transition: none; /* 移除过渡效果，确保tooltip立即跟随鼠标 */
}

/* 环境优化建议样式 */
.eco-recommendations {
  background-color: #f9f9f9;
  border-radius: 8px 8px 10px 10px;
  padding: 10px 10px;
  margin-bottom: 0;
  width: calc(100% - 30px);
  margin-left: auto;
  margin-right: auto;
  height: 280px; /* 从320px减少到280px */
  overflow: visible;
}

.eco-recommendations h4 {
  margin-top: 0;
  margin-bottom: 12px;
  color: #333;
  font-size: 16px; /* 从14px增大到16px */
  font-weight: bold; /* 加粗显示 */
}

.eco-recommendations ul {
  padding-left: 0; /* 移除左边距，去掉小黑点 */
  margin: 0;
  list-style-type: none; /* 移除列表样式 */
}

.eco-recommendations li {
  margin-bottom: 10px;
  color: #111;
  font-size: 14px;
  font-weight: normal;
  line-height: 1.5;
}

/* 移除所有滚动条相关样式 */
.eco-recommendations::-webkit-scrollbar,
.eco-recommendations::-webkit-scrollbar-track,
.eco-recommendations::-webkit-scrollbar-thumb,
.eco-recommendations::-webkit-scrollbar-thumb:hover {
  display: none;
}

/* 移除之前的固定位置标签 */
.score-tag {
  display: none;
}

/* 跟随鼠标的分数标签 */
.mouse-score-tag {
  position: fixed; /* 使用固定定位跟随鼠标 */
  z-index: 9999999; /* 提高z-index确保显示在最上层 */
  background-color: rgba(76, 175, 80, 0.95); /* 更鲜明的背景色 */
  color: white; /* 改为白色文字更醒目 */
  padding: 4px 12px;
  border-radius: 10px;
  font-size: 14px;
  font-weight: bold;
  white-space: nowrap;
  box-shadow: 0 3px 8px rgba(0,0,0,0.25); /* 增强阴影 */
  pointer-events: none; /* 确保标签不影响鼠标事件 */
  transform: translateZ(0); /* 启用硬件加速 */
  border: 1px solid rgba(255, 255, 255, 0.2);
  opacity: 1 !important; /* 确保一定显示 */
  visibility: visible !important; /* 确保可见性 */
}

/* 空气质量相关建议颜色 */
.air-quality-low {
  color: #ff0000 !important; /* 红色 */
}

.air-quality-medium {
  color: #ffa500 !important; /* 黄色(橙色) */
}
</style> 